home *** CD-ROM | disk | FTP | other *** search
/ IBM OEM Software Product … CD For PC Manufacturers / IBM OEM Software - Product Sampler CD for PC Manufacturers.iso / InternetIntranets / Notes / INSTALL.DSK / REGISTER.LSS < prev    next >
Text File  |  1995-07-31  |  70KB  |  1,768 lines

  1. USE "SETUPAPI"
  2.  
  3. '********************** Product Registration Subroutines ****************
  4.  
  5. DECLARE PUBLIC SUB Reg_RegisterProductNames(Acronym$,Full_Name$)
  6. DECLARE PUBLIC SUB Reg_SetSupportedInstallTypes(ProdNo%,Complete%,Custom%,Laptop%)
  7. DECLARE PUBLIC SUB Reg_SetSelectedInstallType(ProdNo%,TypeSelected$) 
  8. DECLARE PUBLIC SUB Reg_SetProdSizes(ProdNo%,FullSize&,MinSize&) 
  9. DECLARE PUBLIC SUB Reg_SetUIInOrOut(ProdNo%,Flag%) 
  10. DECLARE PUBLIC SUB Reg_SetAllowUserToPickInSuite(ProdNo%,Flag%) 
  11. DECLARE PUBLIC SUB Reg_SetShareFlags(ProdNo%,Share%,DLens%,SQL%,Paradox%)
  12. DECLARE PUBLIC SUB Reg_SetShare32Flag(ProdNo%,Share32%)
  13. DECLARE PUBLIC SUB Reg_SetCDOption(ProdNo%,Inst%,CDOptStr$)
  14. DECLARE PUBLIC SUB Reg_SetCDOptionSelected(ProdNo%,Inst%,Selection%)
  15. DECLARE PUBLIC SUB Reg_ReSetCDOptionSelected(ProdNo%,Inst%,Selection%)
  16. DECLARE PUBLIC SUB Reg_ReSetCDOptionSelectedToDefault(ProdNo%,Inst%)
  17. DECLARE PUBLIC SUB Reg_ReSetAllCDOptsSelToDefaults(ProdNo%)
  18. DECLARE PUBLIC SUB Reg_SetNodeOption(ProdNo%,Inst%,NodeOptStr$) 
  19. DECLARE PUBLIC SUB Reg_SetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  20. DECLARE PUBLIC SUB Reg_ReSetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  21. DECLARE PUBLIC SUB Reg_ReSetNodeOptionSelectedToDefault(ProdNo%,Inst%)
  22. DECLARE PUBLIC SUB Reg_ReSetAllNodeOptsSelToDefaults(ProdNo%)
  23. DECLARE PUBLIC SUB Reg_SetSrvSupport(ProdNo%,SrvFlag%) 
  24. DECLARE PUBLIC SUB Reg_SetDistSupport(ProdNo%,DistFlag%) 
  25. DECLARE PUBLIC SUB Reg_SetExtraProdDirsNum(ProdNo%,DirsNum%) 
  26. DECLARE PUBLIC SUB Reg_SetLicenseSupport(ProdNo%,LicFlag%) 
  27. DECLARE PUBLIC SUB Reg_SetLicenseSelected(ProdNo%,LicFlag%) 
  28. DECLARE PUBLIC SUB Reg_SetCountDirectory(ProdNo%,CountDir$) 
  29. DECLARE PUBLIC SUB Reg_SetATMSupport(ProdNo%,ATMFlag%) 
  30. DECLARE PUBLIC SUB Reg_SetProgManagerGroup(ProdNo%,GroupName$) 
  31. DECLARE PUBLIC SUB Reg_SetSystemFileSize(ProdNo%,Size&)
  32. DECLARE PUBLIC SUB Reg_SetBillboardNumber(ProdNo%,BBNum%) 
  33. DECLARE PUBLIC SUB Reg_SetSHAREEXESupport(ProdNo%,Flag%) 
  34. DECLARE PUBLIC SUB Reg_SetNotesSupport(ProdNo%,Flag%) 
  35. DECLARE PUBLIC SUB Reg_SetPreviousVersion(ProdNo%,prev$) 
  36. DECLARE PUBLIC SUB Reg_SetMoreDirsData(ProdNo%,CBName$,DialogID%,HelpID&) 
  37. DECLARE PUBLIC SUB Reg_SetObsFiles(ProdNo%,support%)  
  38.  
  39. '********************** Product Registration Functions ****************
  40.  
  41. DECLARE PUBLIC FUNCTION Reg_GetNumberOfProducts() AS INTEGER
  42. DECLARE PUBLIC FUNCTION Reg_GetProductNo(ProdAcronym$)  AS INTEGER 
  43. DECLARE PUBLIC FUNCTION Reg_GetProductAcronym(ProdNo%)  AS STRING 
  44. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForFullInstall(ProdNo%) AS INTEGER
  45. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForCustInstall(ProdNo%) AS INTEGER
  46. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForMinInstall(ProdNo%) AS INTEGER
  47. DECLARE PUBLIC FUNCTION Reg_GetProdSelectedInstallType(ProdNo%) AS STRING
  48. DECLARE PUBLIC FUNCTION Reg_GetProdFullSize(ProdNo%) AS LONG
  49. DECLARE PUBLIC FUNCTION Reg_GetProdMinSize(ProdNo%) AS LONG
  50. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForShare(ProdNo%) AS INTEGER
  51. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForShare32(ProdNo%) AS INTEGER
  52. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForDataLens(ProdNo%) AS INTEGER
  53. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForSQL(ProdNo%) AS INTEGER
  54. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForParadox(ProdNo%) AS INTEGER
  55. DECLARE PUBLIC FUNCTION Reg_GetCDOptionStr(ProdNo%,Inst%) AS STRING
  56. DECLARE PUBLIC FUNCTION Reg_GetNodeOptionStr(ProdNo%,Inst%) AS STRING
  57. DECLARE PUBLIC FUNCTION Reg_GetNumOfCDOptions(ProdNo%) AS INTEGER
  58. DECLARE PUBLIC FUNCTION Reg_GetNumOfNodeOptions(ProdNo%) AS INTEGER
  59. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForSrv(ProdNo%) AS INTEGER
  60. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForDist(ProdNo%) AS INTEGER
  61. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForExtraProdDirs(ProdNo%) AS INTEGER
  62. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForLicense(ProdNo%) AS INTEGER
  63. DECLARE PUBLIC FUNCTION Reg_IsLicenseSelected(ProdNo%) AS INTEGER
  64. DECLARE PUBLIC FUNCTION Reg_GetCountDirectory(ProdNo%)   AS STRING
  65. DECLARE PUBLIC FUNCTION Reg_GetProdSupportForATM(ProdNo%) AS INTEGER
  66. DECLARE PUBLIC FUNCTION Reg_GetDirSymbolList(ProdNo%)   AS STRING
  67. DECLARE PUBLIC FUNCTION Reg_GetProgManagerGroupName(ProdNo%)   AS STRING
  68. DECLARE PUBLIC FUNCTION Reg_GetNumOfDirectories(ProdNo%) AS INTEGER
  69. DECLARE PUBLIC FUNCTION Reg_GetSystemFileSize(ProdNo%) AS LONG
  70. DECLARE PUBLIC FUNCTION Reg_IsCDOptionSelected(ProdNo%,Inst%) AS STRING
  71. DECLARE PUBLIC FUNCTION Reg_IsCDOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  72. DECLARE PUBLIC FUNCTION Reg_IsNodeOptionSelected(ProdNo%,Inst%) AS STRING
  73. DECLARE PUBLIC FUNCTION Reg_IsNodeOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  74. DECLARE PUBLIC FUNCTION Reg_GetBillboardNumber(ProdNo%)   AS INTEGER
  75. DECLARE PUBLIC FUNCTION Reg_GetProductName(ProdNo%)  AS STRING 
  76. DECLARE PUBLIC FUNCTION Reg_GetUIInOrOut(ProdNo%)  AS INTEGER
  77. DECLARE PUBLIC FUNCTION Reg_GetAllowUserToPickInSuite(ProdNo%)  AS INTEGER
  78. DECLARE PUBLIC FUNCTION Reg_GetSHAREEXESupport(ProdNo%) AS INTEGER
  79. DECLARE PUBLIC FUNCTION Reg_GetNotesSupport(ProdNo%) AS INTEGER
  80. DECLARE PUBLIC FUNCTION Reg_GetPreviousVersion(ProdNo%)   AS STRING
  81. DECLARE PUBLIC FUNCTION Reg_GetMoreDirsCBName(ProdNo%)   AS STRING
  82. DECLARE PUBLIC FUNCTION Reg_GetMoreDirsDlgID(ProdNo%)   AS INTEGER
  83. DECLARE PUBLIC FUNCTION Reg_GetMoreDirsHlpID(ProdNo%)   AS LONG
  84. DECLARE PUBLIC FUNCTION Reg_GetObsFiles(ProdNo%)   AS INTEGER
  85.  
  86. '** Win95 program folder functions
  87. DECLARE PUBLIC SUB Reg_SetSelectedFolder(ProdNo%,s$)
  88. DECLARE PUBLIC SUB Reg_SetRootFolder(s$)
  89. DECLARE PUBLIC FUNCTION Reg_GetSelectedFolder(ProdNo%) AS STRING
  90. DECLARE PUBLIC FUNCTION Reg_GetRootFolder() AS STRING
  91. DECLARE PUBLIC FUNCTION Lot_GetProgFolder(ProdNo%) AS STRING
  92. DECLARE PUBLIC FUNCTION Lot_AddLinkToFolder(prodno%, szProgPath$, szLinkName$, szDesc$, szArgument$, szWorkingDir$) AS INTEGER
  93. DECLARE PUBLIC FUNCTION Lot_AddLinkIconToFolder(prodno%, szProgPath$, szLinkName$, szDesc$, szArgument$, szWorkingDir$, szIconpath$, Icon&) AS INTEGER
  94.  
  95. DECLARE PUBLIC FUNCTION FGetRootFolder LIB "mscuistf.dll" ALIAS "_FGetRootFolder@0" () AS STRING
  96.  
  97. '******************** Product Registration  struc, array and count *********
  98. PUBLIC TYPE PRODINFO
  99.    Acronym                    AS STRING
  100.    Name                       AS STRING
  101.    Complete                   AS INTEGER
  102.    Custom                     AS INTEGER
  103.    Laptop                     AS INTEGER
  104.    SelectedType               AS STRING
  105.    UIInOrOut                  AS INTEGER
  106.    AllowUserToPickInSuite     AS INTEGER
  107.    FullSize                   AS LONG
  108.    MinSize                    AS LONG
  109.    Share                      AS INTEGER
  110.    Share32                    AS INTEGER
  111.    DataLens                   AS INTEGER
  112.    SQL                        AS INTEGER
  113.    Paradox                    AS INTEGER
  114.    CDOpt                      AS STRING
  115.    CDOptSelected              AS STRING
  116.    CDOptDefaultSelected       AS STRING
  117.    NodeOpt                    AS STRING
  118.    NodeOptSelected            AS STRING
  119.    NodeOptDefaultSelected     AS STRING
  120.    Srv                        AS INTEGER
  121.    Dist                       AS INTEGER
  122.    ExtraProdDirsNum           AS INTEGER
  123.    License                    AS INTEGER
  124.    LicenseSelected            AS INTEGER
  125.    CountDirectory             AS STRING
  126.    ATM                        AS INTEGER
  127.    DirSymList                 AS STRING        'Should be populated in Init
  128.    ProgManagerGroup           AS STRING
  129.     ProgFolder                        AS STRING
  130.    SystemFileSize             AS LONG
  131.    BillboardNumber            AS INTEGER
  132.    SHAREEXE                   AS INTEGER
  133.    Notes                      AS INTEGER
  134.    PreviousVersion            AS STRING      'This is a string for future purposes
  135.    MoreDirsCBName             AS STRING
  136.    MoreDirsDlgID              AS INTEGER
  137.    MoreDirsHlpID              AS LONG
  138.    ObsoleteFiles              AS INTEGER      'This is can be a string for future enhancements
  139. END TYPE
  140.  
  141. PUBLIC Prods(gMaxNumOfProds) AS PRODINFO  
  142. PUBLIC gCurrNumOfProds%                      '** Number of products
  143. PUBLIC gCurrentProduct%                      '** The current product
  144.  
  145. '********************** Product Registration Subroutines ****************
  146.  
  147. PUBLIC FUNCTION Reg_GetNumberOfProducts() AS INTEGER
  148. '** Purpose:    Return number of products in database
  149. '*************************************************************************
  150.    Reg_GetNumberOfProducts=gCurrNumOfProds%
  151. END FUNCTION
  152.  
  153. PUBLIC SUB Reg_RegisterProductNames(Acronym$,Full_Name$)
  154. '** Purpose:    This function will:
  155. '**             ++gCurrNumOfProds%
  156. '**             Prods(gCurrNumOfProds%).Acronym=Acronym$
  157. '**             Prods(gCurrNumOfProds%).Name=Full_Name$
  158. '**             Prods(gCurrNumOfProds%).DirSymList=Acronym$+"DIRS"
  159. '**             Prods(gCurrNumOfProds%).CDOpt=Acronym$+"CDOPT"
  160. '**             Prods(gCurrNumOfProds%).CDOptSelected=Acronym$+"CDOPTSELECTED"
  161. '**             Prods(gCurrNumOfProds%).NodeOpt=Acronym$+"NODEOPT"
  162. '**             Prods(gCurrNumOfProds%).NodeOptSelected=Acronym$+"NODEOPTSELECTED"
  163. '**             Prods(gCurrNumOfProds%).NodeOptDefaultSelected=Acronym$+"NODEOPTDEFAULTSELECTED"
  164. '**             Prods(gCurrNumOfProds%).CDOptDefaultSelected=Acronym$+"CDOPTDEFAULTSELECTED"
  165. '**             Prods(gCurrNumOfProds%).BillboardNumber=0
  166. '**             Prods(gCurrNumOfProds%).ProgManagerGroup="Lotus Applications"
  167. '** Parameters:    Acronym$   3 letter acronym
  168. '**         Full_Name$   Full product name
  169. '*************************************************************************
  170.         gCurrNumOfProds%=gCurrNumOfProds%+1
  171.         IF gCurrNumOfProds% > gMaxNumOfProds% THEN
  172. '           ERROR STFSETERROR
  173.            ERROR STFQUIT
  174.         END IF               
  175.  
  176.     Prods(gCurrNumOfProds%).Acronym=Acronym$
  177.     Prods(gCurrNumOfProds%).Name=Full_Name$
  178.     Prods(gCurrNumOfProds%).DirSymList=Acronym$+"DIRS"
  179.     Prods(gCurrNumOfProds%).CDOpt=Acronym$+"CDOPT"
  180.     Prods(gCurrNumOfProds%).CDOptSelected=Acronym$+"CDOPTSELECTED"
  181.     Prods(gCurrNumOfProds%).NodeOpt=Acronym$+"NODEOPT"
  182.     Prods(gCurrNumOfProds%).NodeOptSelected=Acronym$+"NODEOPTSELECTED"
  183.     Prods(gCurrNumOfProds%).NodeOptDefaultSelected=Acronym$+"NODEOPTDEFAULTSELECTED"
  184.     Prods(gCurrNumOfProds%).CDOptDefaultSelected=Acronym$+"CDOPTDEFAULTSELECTED"
  185.         Prods(gCurrNumOfProds%).BillboardNumber=0
  186.         Prods(gCurrNumOfProds%).ProgManagerGroup="Lotus Applications"
  187.  
  188.         Prods(gCurrNumOfProds%).UIInOrOut = 1
  189.         Prods(gCurrNumOfProds%).AllowUserToPickInSuite = 1
  190.         Prods(gCurrNumOfProds%).Share     = 0
  191.         Prods(gCurrNumOfProds%).Share32   = 0
  192.         Prods(gCurrNumOfProds%).DataLens  = 0
  193.         Prods(gCurrNumOfProds%).SQL       = 0
  194.         Prods(gCurrNumOfProds%).Paradox   = 0
  195.         Prods(gCurrNumOfProds%).Srv       = 0
  196.         Prods(gCurrNumOfProds%).License   = 0
  197.         Prods(gCurrNumOfProds%).ATM       = 0
  198.         Prods(gCurrNumOfProds%).ExtraProdDirsNum      = 0
  199.         Prods(gCurrNumOfProds%).PreviousVersion       = ""
  200.         Prods(gCurrNumOfProds%).ObsoleteFiles         = 0
  201.  
  202. END SUB
  203.  
  204. PUBLIC SUB Reg_SetSupportedInstallTypes(ProdNo%,Complete%,Custom%,Laptop%) 
  205. '** Purpose:    This function will set:
  206. '**             Prods(ProdNo%).Complete=Complete%
  207. '**             Prods(ProdNo%).Custom=Custom%
  208. '**             Prods(ProdNo%).Laptop=Laptop%
  209. '** Parameters:    ProdNo%  the product number
  210. '**         Complete%    1 or 0 if complete install type is supported or not
  211. '**         Custom%         1 or 0 if custom install type is supported or not
  212. '**         Laptop%      1 or 0 if laptop install type is supported or not
  213. '*************************************************************************
  214.         IF ProdNo% > gMaxNumOfProds% THEN
  215. '           ERROR STFSETERROR
  216.            ERROR STFQUIT
  217.         END IF               
  218.     Prods(ProdNo%).Complete=Complete%
  219.     Prods(ProdNo%).Custom=Custom%
  220.     Prods(ProdNo%).Laptop=Laptop%
  221. END SUB
  222.  
  223. PUBLIC SUB Reg_SetSelectedInstallType(ProdNo%,TypeSelected$) 
  224. '** Purpose:    This function will set:
  225. '**            Prods(ProdNo%).SelectedType=TypeSelected$ 
  226. '** Parameters:    ProdNo%        the product number
  227. '**         TypeSelected$  one of the three types:
  228. '**                            "COMPLETE"|"CUSTOM"|"LAPTOP"
  229. '*************************************************************************
  230.         IF ProdNo% > gMaxNumOfProds% THEN
  231. '           ERROR STFSETERROR
  232.            ERROR STFQUIT
  233.         END IF               
  234.         IF (TypeSelected$<>gCOMPLETE$ AND TypeSelected$<>gCUSTOM$ AND _
  235.                 TypeSelected$<>gLAPTOP$) THEN
  236. '           ERROR STFSETERROR
  237.            ERROR STFQUIT
  238.         END IF               
  239.  
  240.         SELECT CASE TypeSelected$
  241.         CASE gCOMPLETE$
  242.             Prods(ProdNo%).SelectedType=TypeSelected$
  243.  
  244.         CASE gCUSTOM$
  245.             IF(Prods(ProdNo%).Custom=1) THEN
  246.                     Prods(ProdNo%).SelectedType=TypeSelected$
  247.                 ELSE
  248.                     Prods(ProdNo%).SelectedType=gCOMPLETE$
  249.                 END IF
  250.  
  251.         CASE gLAPTOP$
  252.             IF(Prods(ProdNo%).Laptop=1) THEN
  253.                     Prods(ProdNo%).SelectedType=TypeSelected$
  254.                 ELSE
  255.                     Prods(ProdNo%).SelectedType=gCOMPLETE$
  256.                 END IF
  257.         END SELECT
  258.  
  259. END SUB
  260.  
  261. PUBLIC SUB Reg_SetProdSizes(ProdNo%,FullSize&,MinSize&) 
  262. '** Purpose:    This function will set:
  263. '**             Prods(ProdNo%).FullSize=FullSize&
  264. '**             Prods(ProdNo%).MinSize=MinSize&
  265. '** Parameters:    ProdNo%  the product number
  266. '**         FullSize& the size of the product for full install
  267. '**         MinSize& the size of the product for minimum install
  268. '*************************************************************************
  269.         IF ProdNo% > gMaxNumOfProds% THEN
  270. '           ERROR STFSETERROR
  271.            ERROR STFQUIT
  272.         END IF               
  273.     Prods(ProdNo%).FullSize=FullSize&
  274.     Prods(ProdNo%).MinSize=MinSize&
  275. END SUB
  276.  
  277. PUBLIC SUB Reg_SetUIInOrOut(ProdNo%,Flag%) 
  278. '** Purpose:    This function will set:
  279. '**             Prods(ProdNo%).UIInOrOut=Flag%
  280. '** Parameters:    ProdNo%  the product number
  281. '**         Flag% 1 if the product is in UI and 0 if not
  282. '*************************************************************************
  283.         IF ProdNo% > gMaxNumOfProds% THEN
  284. '           ERROR STFSETERROR
  285.            ERROR STFQUIT
  286.         END IF      
  287.         Prods(ProdNo%).UIInOrOut = Flag%
  288. END SUB
  289.  
  290. PUBLIC SUB Reg_SetAllowUserToPickInSuite(ProdNo%,Flag%) 
  291. '** Purpose:    This function will set:
  292. '**             Prods(ProdNo%).AllowUserToPickInSuite=Flag%
  293. '** Parameters:    ProdNo%  the product number
  294. '**         Flag% 1 if the product is in UI and 0 if not
  295. '*************************************************************************
  296.         IF ProdNo% > gMaxNumOfProds% THEN
  297. '           ERROR STFSETERROR
  298.            ERROR STFQUIT
  299.         END IF      
  300.         Prods(ProdNo%).AllowUserToPickInSuite = Flag%
  301. END SUB
  302.  
  303.  
  304. PUBLIC SUB Reg_SetShareFlags(ProdNo%,Share%,DLens%,SQL%,Paradox%)
  305. '** Purpose:    This function will set:
  306. '**             Prods(ProdNo%).Share=Share%
  307. '**             Prods(ProdNo%).DataLens=DLens%
  308. '**             Prods(ProdNo%).SQL=SQL%
  309. '**             Prods(ProdNo%).Paradox=Paradox%
  310. '** Parameters:    ProdNo%  the product number
  311. '**         Share%   1 or 0 if the product has shared tools or not
  312. '**         DLens%   1 or 0 if the product has DataLens drivers or not
  313. '**         SQL%     1 or 0 if the product has SQL tools or not
  314. '**         Paradox% 1 or 0 if the product has Paradox tools or not
  315. '*************************************************************************
  316.         IF ProdNo% > gMaxNumOfProds% THEN
  317. '           ERROR STFSETERROR
  318.            ERROR STFQUIT
  319.         END IF               
  320.     Prods(ProdNo%).Share=Share%
  321.     Prods(ProdNo%).DataLens=DLens%
  322.     Prods(ProdNo%).SQL=SQL%
  323.     Prods(ProdNo%).Paradox=Paradox%
  324. END SUB
  325.  
  326. PUBLIC SUB Reg_SetShare32Flag(ProdNo%,Share32%)
  327. '** Purpose:    This function will set:
  328. '**             Prods(ProdNo%).Share32=Share32%
  329. '** Parameters:    ProdNo%  the product number
  330. '**         Share32%   1 or 0 if the product has shared 32 tools or not
  331. '*************************************************************************
  332.         IF ProdNo% > gMaxNumOfProds% THEN
  333. '           ERROR STFSETERROR
  334.            ERROR STFQUIT
  335.         END IF               
  336.     Prods(ProdNo%).Share32=Share32%
  337. END SUB
  338.  
  339.  
  340.  
  341. PUBLIC SUB Reg_SetCDOption(ProdNo%,Inst%,CDOptStr$)
  342. '** Purpose:    This function will do:
  343. '**                  CDOptSym$=Prods(ProdNo%).CDOpt
  344. '**                   SetListItem CDOptSym$, Inst%,CDOptStr$
  345. '** Parameters:    ProdNo%  the product number
  346. '**         Inst% instance of the CDOption
  347. '**         CDOptStr$ CDOpt string (KEYWORD)
  348. '*************************************************************************
  349. DIM CDOptSym$
  350.         IF ProdNo% > gMaxNumOfProds% THEN
  351. '           ERROR STFSETERROR
  352.            ERROR STFQUIT
  353.         END IF               
  354.         CDOptSym$=Prods(ProdNo%).CDOpt
  355.         IF CDOptSym$ = "" OR CDOptStr$ = ""THEN    
  356. '           ERROR STFSETERROR
  357.            ERROR STFQUIT
  358.         END IF               
  359.         SetListItem CDOptSym$, Inst%,CDOptStr$
  360. END SUB
  361.  
  362. PUBLIC SUB Reg_SetCDOptionSelected(ProdNo%,Inst%,Selection%)
  363. '** Purpose:    This function will do:
  364. '**                  CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  365. '**                   SetListItem CDOptSymSelected$, Inst%,Selection%
  366. '**                  CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  367. '**                   SetListItem CDOptSymDefaultSelected$, Inst%,Selection%
  368. '** Parameters:    ProdNo%  the product number
  369. '**         Inst% instance of the CDOptionSelected
  370. '**         Selection% 1 or 0 if the option was selected or deselected
  371. '*************************************************************************
  372. DIM CDOptSymSelected$,CDOptSymDefaultSelected$
  373.         IF ProdNo% > gMaxNumOfProds% THEN
  374. '           ERROR STFSETERROR
  375.            ERROR STFQUIT
  376.         END IF               
  377.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  378.         IF CDOptSymSelected$ = "" OR _
  379.            (Selection% <> 1 AND Selection% <> 0) THEN    
  380. '           ERROR STFSETERROR
  381.            ERROR STFQUIT
  382.         END IF               
  383.         SetListItem CDOptSymSelected$,Inst%,STR$(Selection%)
  384.  
  385.         CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  386.         IF CDOptSymDefaultSelected$ = "" OR _
  387.            (Selection% <> 1 AND Selection% <> 0) THEN    
  388. '           ERROR STFSETERROR
  389.            ERROR STFQUIT
  390.         END IF               
  391.         SetListItem CDOptSymDefaultSelected$,Inst%,STR$(Selection%)
  392.  
  393. END SUB
  394.  
  395.  
  396. PUBLIC SUB Reg_ReSetCDOptionSelected(ProdNo%,Inst%,Selection%)
  397. '** Purpose:    This function will do:
  398. '**                  CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  399. '**                   SetListItem CDOptSymSelected$, Inst%,Selection%
  400. '** Parameters:    ProdNo%  the product number
  401. '**         Inst% instance of the CDOptionSelected
  402. '**         Selection% 1 or 0 if the option was selected or deselected
  403. '*************************************************************************
  404. DIM CDOptSymSelected$
  405.         IF ProdNo% > gMaxNumOfProds% THEN
  406. '           ERROR STFSETERROR
  407.            ERROR STFQUIT
  408.         END IF               
  409.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  410.         IF CDOptSymSelected$ = "" OR _
  411.            (Selection% <> 1 AND Selection% <> 0) THEN    
  412. '           ERROR STFSETERROR
  413.            ERROR STFQUIT
  414.         END IF               
  415.         SetListItem CDOptSymSelected$,Inst%,STR$(Selection%)
  416.  
  417. END SUB
  418.  
  419. PUBLIC SUB Reg_ReSetCDOptionSelectedToDefault(ProdNo%,Inst%)
  420. '** Purpose:    This function will do:
  421. '**                  CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  422. '**                   Sel$ = GetListItem (CDOptSymDefaultSelected$, Inst%)
  423. '**                  CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  424. '**                   SetListItem CDOptSymSelected$, Inst%,CINT(Sel$)
  425. '** Parameters:    ProdNo%  the product number
  426. '**         Inst% instance of the CDOptionSelected
  427. '*************************************************************************
  428. DIM CDOptSymSelected$,CDOptSymDefaultSelected$,Sel$
  429.         IF ProdNo% > gMaxNumOfProds% THEN
  430. '           ERROR STFSETERROR
  431.            ERROR STFQUIT
  432.         END IF               
  433.         CDOptSymDefaultSelected$=Prods(ProdNo%).CDOptDefaultSelected
  434.         IF CDOptSymDefaultSelected$ = ""  THEN    
  435. '           ERROR STFSETERROR
  436.            ERROR STFQUIT
  437.         END IF                                  
  438.         Sel$ = GetListItem( CDOptSymDefaultSelected$,Inst% )
  439.  
  440.         CDOptSymSelected$=Prods(ProdNo%).CDOptSelected
  441.         IF CDOptSymSelected$ = ""  THEN    
  442. '           ERROR STFSETERROR
  443.            ERROR STFQUIT
  444.         END IF               
  445.         SetListItem CDOptSymSelected$,Inst%,Sel$
  446.  
  447. END SUB
  448.  
  449. PUBLIC SUB Reg_ReSetAllCDOptsSelToDefaults(ProdNo%)
  450. '** Purpose:    This function will do for every option the following:
  451. '**                  Reg_ReSetCDOptionSelectedToDefault ProdNo%,Inst%
  452. '** Parameters:    ProdNo%  the product number
  453. '*************************************************************************
  454. DIM CDOptSelSym$,CDOptSelListLen%,Inst%
  455.         IF ProdNo% > gMaxNumOfProds% THEN
  456. '           ERROR STFSETERROR
  457.            ERROR STFQUIT
  458.         END IF               
  459.  
  460.         CDOptSelListLen% = 0
  461.         CDOptSelSym$=Prods(ProdNo%).CDOptSelected
  462.         IF CDOptSelSym$ = "" THEN
  463. '           ERROR STFSETERROR
  464.            ERROR STFQUIT
  465.         END IF       
  466.         CDOptSelListLen%=GetListLength(CDOptSelSym$)
  467.         FOR Inst%=1 TO CDOptSelListLen%
  468.            Reg_ReSetCDOptionSelectedToDefault ProdNo%,Inst%
  469.         NEXT
  470.  
  471. END SUB
  472.  
  473.  
  474. PUBLIC SUB Reg_SetNodeOption(ProdNo%,Inst%,NodeOptStr$) 
  475. '** Purpose:    This function will do:
  476. '**                  NodeOptSym$=Prods(ProdNo%).NodeOpt
  477. '**                   SetListItem NodeOptSym$, Inst%,NodeOptStr$
  478. '** Parameeters:     ProdNo%  the product number
  479. '**              Inst% instance of the the NodeOpt
  480. '**              NodeOptStr$ Node Option string (KEYWORD)
  481. '*************************************************************************
  482. DIM NodeOptSym$
  483.         IF ProdNo% > gMaxNumOfProds% THEN
  484. '           ERROR STFSETERROR
  485.            ERROR STFQUIT
  486.         END IF               
  487.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  488.         IF NodeOptSym$ = "" OR NodeOptStr$ = ""THEN    
  489. '           ERROR STFSETERROR
  490.            ERROR STFQUIT
  491.         END IF               
  492.         SetListItem NodeOptSym$, Inst%,NodeOptStr$
  493.  
  494. END SUB
  495.  
  496. PUBLIC SUB Reg_SetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  497. '** Purpose:    This function will do:
  498. '**                  NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  499. '**                   SetListItem NodeOptSymSelected$, Inst%,Selection%
  500. '**                  NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  501. '**                   SetListItem NodeOptSymDefaultSelected$, Inst%,Selection%
  502. '** Parameters:    ProdNo%  the product number
  503. '**         Inst% instance of the NodeOptionSelected
  504. '**         Selection% 1 or 0 if the option was selected or deselected
  505. '*************************************************************************
  506. DIM NodeOptSymSelected$,NodeOptSymDefaultSelected$
  507.         IF ProdNo% > gMaxNumOfProds% THEN
  508. '           ERROR STFSETERROR
  509.            ERROR STFQUIT
  510.         END IF               
  511.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  512.         IF NodeOptSymSelected$ = "" OR _
  513.            (Selection% <> 1 AND Selection% <> 0) THEN    
  514. '           ERROR STFSETERROR
  515.            ERROR STFQUIT
  516.         END IF               
  517.         SetListItem NodeOptSymSelected$,Inst%,STR$(Selection%)
  518.  
  519.         NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  520.         IF NodeOptSymDefaultSelected$ = "" OR _
  521.            (Selection% <> 1 AND Selection% <> 0) THEN    
  522. '           ERROR STFSETERROR
  523.            ERROR STFQUIT
  524.         END IF               
  525.         SetListItem NodeOptSymDefaultSelected$,Inst%,STR$(Selection%)
  526.  
  527. END SUB
  528.  
  529. PUBLIC SUB Reg_ReSetNodeOptionSelected(ProdNo%,Inst%,Selection%)
  530. '** Purpose:    This function will do:
  531. '**                  NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  532. '**                   SetListItem NodeOptSymSelected$, Inst%,Selection%
  533. '** Parameters:    ProdNo%  the product number
  534. '**         Inst% instance of the NodeOptionSelected
  535. '**         Selection% 1 or 0 if the option was selected or deselected
  536. '*************************************************************************
  537. DIM NodeOptSymSelected$
  538.         IF ProdNo% > gMaxNumOfProds% THEN
  539. '           ERROR STFSETERROR
  540.            ERROR STFQUIT
  541.         END IF               
  542.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  543.         IF NodeOptSymSelected$ = "" OR _
  544.            (Selection% <> 1 AND Selection% <> 0) THEN    
  545. '           ERROR STFSETERROR
  546.            ERROR STFQUIT
  547.         END IF               
  548.         SetListItem NodeOptSymSelected$,Inst%,STR$(Selection%)
  549.  
  550. END SUB
  551.  
  552. PUBLIC SUB Reg_ReSetNodeOptionSelectedToDefault(ProdNo%,Inst%)
  553. '** Purpose:    This function will do:
  554. '**                  NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  555. '**                   Sel$ = GetListItem (NodeOptSymDefaultSelected$, Inst%)
  556. '**                  NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  557. '**                   SetListItem NodeOptSymSelected$, Inst%,CINT(Sel$)
  558. '** Parameters:    ProdNo%  the product number
  559. '**         Inst% instance of the NodeOptionSelected
  560. '*************************************************************************
  561. DIM NodeOptSymSelected$,NodeOptSymDefaultSelected$,Sel$
  562.         IF ProdNo% > gMaxNumOfProds% THEN
  563. '           ERROR STFSETERROR
  564.            ERROR STFQUIT
  565.         END IF               
  566.         NodeOptSymDefaultSelected$=Prods(ProdNo%).NodeOptDefaultSelected
  567.         IF NodeOptSymDefaultSelected$ = ""  THEN    
  568. '           ERROR STFSETERROR
  569.            ERROR STFQUIT
  570.         END IF                                  
  571.         Sel$ = GetListItem( NodeOptSymDefaultSelected$,Inst% )
  572.  
  573.         NodeOptSymSelected$=Prods(ProdNo%).NodeOptSelected
  574.         IF NodeOptSymSelected$ = ""  THEN    
  575. '           ERROR STFSETERROR
  576.            ERROR STFQUIT
  577.         END IF               
  578.         SetListItem NodeOptSymSelected$,Inst%,Sel$
  579.  
  580. END SUB
  581.  
  582. PUBLIC SUB Reg_ReSetAllNodeOptsSelToDefaults(ProdNo%)
  583. '** Purpose:    This function will do for every option the following:
  584. '**                  Reg_ReSetNodeOptionSelectedToDefault ProdNo%,Inst%
  585. '** Parameters:    ProdNo%  the product number
  586. '*************************************************************************
  587. DIM NodeOptSelSym$,NodeOptSelListLen%,Inst%
  588.         IF ProdNo% > gMaxNumOfProds% THEN
  589. '           ERROR STFSETERROR
  590.            ERROR STFQUIT
  591.         END IF               
  592.  
  593.         NodeOptSelListLen% = 0
  594.         NodeOptSelSym$=Prods(ProdNo%).NodeOptSelected
  595.         IF NodeOptSelSym$ = "" THEN
  596. '           ERROR STFSETERROR
  597.            ERROR STFQUIT
  598.         END IF       
  599.         NodeOptSelListLen%=GetListLength(NodeOptSelSym$)
  600.         FOR Inst%=1 TO NodeOptSelListLen%
  601.            Reg_ReSetNodeOptionSelectedToDefault ProdNo%,Inst%
  602.         NEXT
  603.  
  604. END SUB
  605.  
  606. PUBLIC SUB Reg_SetSrvSupport(ProdNo%,SrvFlag%) 
  607. '** Purpose:    This function will set:
  608. '**             Prods(ProdNo%).Srv=SrvFlag%
  609. '** Parameeters:    ProdNo%  the product number
  610. '**         SrvFlag% 1 or 0
  611. '*************************************************************************
  612.         IF ProdNo% > gMaxNumOfProds% THEN
  613. '           ERROR STFSETERROR
  614.            ERROR STFQUIT
  615.         END IF               
  616.         IF SrvFlag% <> 0 AND SrvFlag% <> 1 THEN
  617. '           ERROR STFSETERROR
  618.            ERROR STFQUIT
  619.         END IF               
  620.     Prods(ProdNo%).Srv=SrvFlag%
  621. END SUB
  622.  
  623. PUBLIC SUB Reg_SetDistSupport(ProdNo%,DistFlag%) 
  624. '** Purpose:    This function will set:
  625. '**             Prods(ProdNo%).Dist=DistFlag%
  626. '** Parameeters:    ProdNo%  the product number
  627. '**         DistFlag% 1 or 0
  628. '*************************************************************************
  629.         IF ProdNo% > gMaxNumOfProds% THEN
  630. '           ERROR STFSETERROR
  631.            ERROR STFQUIT
  632.         END IF               
  633.         IF DistFlag% <> 0 AND DistFlag% <> 1 THEN
  634. '           ERROR STFSETERROR
  635.            ERROR STFQUIT
  636.         END IF               
  637.     Prods(ProdNo%).Dist=DistFlag%
  638. END SUB
  639.  
  640. PUBLIC SUB Reg_SetExtraProdDirsNum(ProdNo%,ExtraProdDirs%) 
  641. '** Purpose:    This function will set:
  642. '**             Prods(ProdNo%).ExtraProdDirsNum=ExtraProdDirs%
  643. '** Parameeters:    ProdNo%  the product number
  644. '**                 ExtraProdDirs% 1 or 0
  645. '**                     This will change to 0 to n when support for more 
  646. '**                     then two top directories will be implemented.
  647. '*************************************************************************
  648.         IF ProdNo% > gMaxNumOfProds% THEN
  649. '           ERROR STFSETERROR
  650.            ERROR STFQUIT
  651.         END IF               
  652.         IF ExtraProdDirs% <> 0 AND ExtraProdDirs% <> 1 THEN
  653. '           ERROR STFSETERROR
  654.            ERROR STFQUIT
  655.         END IF               
  656.     Prods(ProdNo%).ExtraProdDirsNum=ExtraProdDirs%
  657. END SUB
  658.  
  659.  
  660.  
  661. PUBLIC SUB Reg_SetLicenseSupport(ProdNo%,LicFlag%) 
  662. '** Purpose:    This function will set:
  663. '**             Prods(ProdNo%).License=LicFlag%
  664. '**         as well as Prods(ProdNo%).LicenseSelected=LicFlag%
  665. '** Parameeters:    ProdNo%  the product number
  666. '**         LicFlag% 1 or 0
  667. '*************************************************************************
  668.         IF ProdNo% > gMaxNumOfProds% THEN
  669. '           ERROR STFSETERROR
  670.            ERROR STFQUIT
  671.         END IF               
  672.         IF LicFlag% <> 0 AND LicFlag% <> 1 THEN
  673. '           ERROR STFSETERROR
  674.            ERROR STFQUIT
  675.         END IF               
  676. '    Prods(ProdNo%).License=LicFlag%
  677.  '    Prods(ProdNo%).LicenseSelected=LicFlag%
  678.     Prods(ProdNo%).License=0
  679.     Prods(ProdNo%).LicenseSelected=0
  680.  
  681. END SUB
  682.  
  683. PUBLIC SUB Reg_SetLicenseSelected(ProdNo%,LicFlag%) 
  684. '** Purpose:    This function will set:
  685. '**             Prods(ProdNo%).LicenseSelected=LicFlag%
  686. '** Parameeters:    ProdNo%  the product number
  687. '**             LicFlag% 1 or 0
  688. '*************************************************************************
  689.         IF ProdNo% > gMaxNumOfProds% THEN
  690. '           ERROR STFSETERROR
  691.            ERROR STFQUIT
  692.         END IF               
  693.         IF LicFlag% <> 0 AND LicFlag% <> 1 THEN
  694. '           ERROR STFSETERROR
  695.            ERROR STFQUIT
  696.         END IF               
  697. '    Prods(ProdNo%).LicenseSelected=LicFlag%
  698.     Prods(ProdNo%).LicenseSelected=0
  699. END SUB
  700.  
  701. PUBLIC SUB Reg_SetCountDirectory(ProdNo%,CountDir$) 
  702. '** Purpose:    This function will set:
  703. '**             Prods(ProdNo%).CountDirectory=CountDir$
  704. '** Parameeters:    ProdNo%  the product number
  705. '**             CountDir$
  706. '*************************************************************************
  707.         IF ProdNo% > gMaxNumOfProds% THEN
  708. '           ERROR STFSETERROR
  709.            ERROR STFQUIT
  710.         END IF               
  711.         IF CountDir$ ="" THEN
  712. '           ERROR STFSETERROR
  713.            ERROR STFQUIT
  714.         END IF               
  715.     Prods(ProdNo%).CountDirectory=CountDir$
  716. END SUB
  717.  
  718. PUBLIC SUB Reg_SetATMSupport(ProdNo%,ATMFlag%) 
  719. '** Purpose:    This function will set:
  720. '**             Prods(ProdNo%).ATM=ATMFlag%
  721. '** Parameeters:    ProdNo%  the product number
  722. '**                 ATMFlag% 1 or 0
  723. '*************************************************************************
  724.         IF ProdNo% > gMaxNumOfProds% THEN
  725. '           ERROR STFSETERROR
  726.            ERROR STFQUIT
  727.         END IF               
  728.         IF ATMFlag% <> 0 AND ATMFlag% <> 1 THEN
  729. '           ERROR STFSETERROR
  730.            ERROR STFQUIT
  731.         END IF               
  732.     Prods(ProdNo%).ATM=ATMFlag%
  733. END SUB
  734.  
  735. PUBLIC SUB Reg_SetProgManagerGroup(ProdNo%,GroupName$) 
  736. '** Purpose:    This function will set:
  737. '**             Prods(ProdNo%).ProgManagerGroup=GroupName$
  738. '** Parameters:    ProdNo%  the product number
  739. '**         Flag% 1 if the product is in UI and 0 if not
  740. '*************************************************************************
  741.         IF ProdNo% > gMaxNumOfProds% THEN
  742. '           ERROR STFSETERROR
  743.            ERROR STFQUIT
  744.         END IF               
  745.         IF LEN(GroupName$) > 30 THEN
  746.            Prods(ProdNo%).ProgManagerGroup=LEFT$(GroupName$,30)
  747.         ELSE
  748.            Prods(ProdNo%).ProgManagerGroup=GroupName$
  749.         END IF
  750.  
  751.         IF Reg_GetRootFolder() = "" THEN
  752.             IF IsNewShell() AND LoadCommonCtl() THEN
  753.                 Reg_SetRootFolder(FGetRootFolder())
  754.             END IF
  755.         END IF
  756.  
  757.         IF Reg_GetSelectedFolder(ProdNo%) = "" THEN
  758.             Reg_SetSelectedFolder ProdNo%,Reg_GetRootFolder()
  759.         END IF
  760.  
  761. END SUB
  762.  
  763. PUBLIC SUB Reg_SetBillboardNumber(ProdNo%,BBNum%) 
  764. '** Purpose:    This function will set:
  765. '**             Prods(ProdNo%).BillboardNumber=BBNum%
  766. '** Parameters:    ProdNo%  the product number
  767. '**         BBNum% 0 or more billboards
  768. '*************************************************************************
  769.         IF ProdNo% > gMaxNumOfProds% THEN
  770. '           ERROR STFSETERROR
  771.            ERROR STFQUIT
  772.         END IF               
  773.         IF BBNum% < 0 THEN
  774. '           ERROR STFSETERROR
  775.            ERROR STFQUIT
  776.         END IF               
  777.         Prods(ProdNo%).BillboardNumber=BBNum%
  778. END SUB
  779.  
  780. PUBLIC SUB Reg_SetMoreDirsData(ProdNo%,CBName$,DialogID%,HelpID&) 
  781. '** Purpose:    This function will do:
  782. '**                  Prods(ProdNo%).MoreDirsCBName=CBName$
  783. '**                  Prods(ProdNo%).MoreDirsDlgID=DialogID%
  784. '**                  Prods(ProdNo%).MoreDirsHlpID=HelpID&
  785. '** Parameters:    ProdNo%    the product number
  786. '**         CBName$    The callback ID
  787. '**         DialogID%  The dialog ID number
  788. '**             HelpID&    The help ID
  789. '*************************************************************************
  790.         ' If the product # is NOT in range 
  791.         IF ProdNo% > gMaxNumOfProds% THEN
  792.            ERROR STFQUIT
  793.         END IF
  794.         ' If invalid/incomplet data is provided              
  795.         IF CBName$ = "" OR DialogID% = 0 OR HelpID& = CLNG(0) THEN
  796.            ERROR STFQUIT
  797.         END IF               
  798.  
  799.         Prods(ProdNo%).MoreDirsCBName=CBName$
  800.         Prods(ProdNo%).MoreDirsDlgID=DialogID%
  801.         Prods(ProdNo%).MoreDirsHlpID=HelpID&
  802.  
  803.  
  804. END SUB
  805.  
  806.  
  807. '********************** Product Registration Functions ****************
  808.  
  809. PUBLIC FUNCTION Reg_GetProductNo(ProdAcronym$)  AS INTEGER 
  810. '** Purpose:    Finds the index of Acronym$ in Prods array .
  811. '** Parameters:    Acronym$  3 letter acronym of the product
  812. '** Return:    ProdNo% the index of ProdAcronym$ in the Prods array
  813. '**                       0 if the acronym is not found
  814. '*************************************************************************
  815. DIM ProdNo%, count% 
  816.         IF ProdAcronym$ = "" THEN
  817. '           ERROR STFSETERROR
  818.            ERROR STFQUIT
  819.         END IF     
  820.         ProdNo% = 0
  821.         FOR count%=1 TO gMaxNumOfProds%
  822.                 IF Prods(count%).Acronym = ProdAcronym$ THEN
  823.                         ProdNo% = count%    
  824.                         EXIT FOR
  825.                 END IF
  826.         NEXT
  827.         Reg_GetProductNo=ProdNo%
  828. END FUNCTION
  829.  
  830. PUBLIC FUNCTION Reg_GetProductAcronym(ProdNo%)  AS STRING 
  831. '** Purpose:    Finds the acronym in Prods array for the index ProdNo%.
  832. '** Parameters:    ProdNo% product number
  833. '** Return:    Acronym$ of the product with the number ProdNo%
  834. '**             "" if the acronym is not found
  835. '*************************************************************************
  836. DIM ProdAcronym$
  837.         ProdAcronym$=""
  838.         IF ProdNo% > gMaxNumOfProds% THEN
  839. '           ERROR STFSETERROR
  840.            ERROR STFQUIT
  841.         END IF               
  842.         ProdAcronym$=Prods(ProdNo%).Acronym
  843.         Reg_GetProductAcronym=ProdAcronym$        
  844. END FUNCTION
  845.  
  846. PUBLIC FUNCTION Reg_GetProductname(ProdNo%)  AS STRING 
  847. '** Purpose:    Finds the name in Prods array for the index ProdNo%.
  848. '** Parameters:    ProdNo% product number
  849. '** Return:    name$ of the product with the number ProdNo%
  850. '**             "" if the name is not found
  851. '*************************************************************************
  852.     DIM Prodname$
  853.         Prodname$=""
  854.         IF ProdNo% > gMaxNumOfProds% THEN
  855. '           ERROR STFSETERROR
  856.            ERROR STFQUIT
  857.         END IF               
  858.         Prodname$ = Prods(ProdNo%).Name
  859.         Reg_GetProductname = Prodname$        
  860. END FUNCTION
  861.  
  862. PUBLIC FUNCTION Reg_GetUIInOrOut(ProdNo%)  AS INTEGER
  863. '** Purpose:    Finds the uiinorout flag in Prods array for the index ProdNo%.
  864. '** Parameters:    ProdNo% product number
  865. '** Return:    UIInOrOut flag
  866. '*************************************************************************
  867.     DIM flag%
  868.  
  869.         IF ProdNo% > gMaxNumOfProds% THEN
  870. '           ERROR STFSETERROR
  871.            ERROR STFQUIT
  872.         END IF               
  873.         flag% = Prods(ProdNo%).UIInOrOut
  874.         Reg_GetUIInOrOut = flag%      
  875. END FUNCTION
  876.  
  877. PUBLIC FUNCTION Reg_GetAllowUserToPickInSuite(ProdNo%)  AS INTEGER
  878. '** Purpose:    Finds the AllowUserToPickInSuite flag in Prods array for the index ProdNo%.
  879. '** Parameters:    ProdNo% product number
  880. '** Return:    AllowUserToPickInSuite flag
  881. '*************************************************************************
  882.     DIM flag%
  883.  
  884.         IF ProdNo% > gMaxNumOfProds% THEN
  885. '           ERROR STFSETERROR
  886.            ERROR STFQUIT
  887.         END IF               
  888.         flag% = Prods(ProdNo%).AllowUserToPickInSuite
  889.         Reg_GetAllowUserToPickInSuite = flag%      
  890. END FUNCTION
  891.  
  892. PUBLIC FUNCTION Reg_GetProdSupportForFullInstall(ProdNo%) AS INTEGER
  893. '** Purpose:    Finds Prods(ProdNo%).Complete
  894. '** Parameters:    ProdNo% product number
  895. '** Return:    SuppFlag% is 1 if the product supports full install and
  896. '**             0 if it does not
  897. '*************************************************************************
  898. DIM SuppFlag%
  899.         SuppFlag% = 0
  900.         IF ProdNo% > gMaxNumOfProds% THEN
  901. '           ERROR STFSETERROR
  902.            ERROR STFQUIT
  903.         END IF       
  904.         SuppFlag%=Prods(ProdNo%).Complete
  905.         Reg_GetProdSupportForFullInstall=SuppFlag% 
  906. END FUNCTION
  907.  
  908. PUBLIC FUNCTION Reg_GetProdSupportForCustInstall(ProdNo%) AS INTEGER
  909. '** Purpose:    Finds Prods(ProdNo%).Custom
  910. '** Parameters:    ProdNo% product number
  911. '** Return:    SuppFlag% is 1 if the product supports Custom install
  912. '**             and 0 if it does not
  913. '*************************************************************************
  914. DIM SuppFlag%
  915.         SuppFlag% = 0
  916.         IF ProdNo% > gMaxNumOfProds% THEN
  917. '           ERROR STFSETERROR
  918.            ERROR STFQUIT
  919.         END IF       
  920.         SuppFlag%=Prods(ProdNo%).Custom        
  921.         Reg_GetProdSupportForCustInstall=SuppFlag% 
  922. END FUNCTION
  923.  
  924. PUBLIC FUNCTION Reg_GetProdSupportForMinInstall(ProdNo%) AS INTEGER
  925. '** Purpose:    Finds Prods(ProdNo%).Laptop
  926. '** Parameters:    ProdNo% product number
  927. '** Return:    SuppFlag% is 1 if the product supports minim install and
  928. '**             0 if it does not
  929. '*************************************************************************
  930. DIM SuppFlag%
  931.         SuppFlag% = 0
  932.         IF ProdNo% > gMaxNumOfProds% THEN
  933. '           ERROR STFSETERROR
  934.            ERROR STFQUIT
  935.         END IF       
  936.         SuppFlag%=Prods(ProdNo%).Laptop        
  937.         Reg_GetProdSupportForMinInstall=SuppFlag% 
  938. END FUNCTION
  939.  
  940. PUBLIC FUNCTION Reg_GetProdSelectedInstallType(ProdNo%) AS STRING
  941. '** Purpose:    Finds Prods(ProdNo%).SelectedType
  942. '** Parameters:    ProdNo% product number
  943. '** Return:    SelType$ is  "COMPLETE"|"CUSTOM"|"LAPTOP" or "" if not set
  944. '*************************************************************************
  945. DIM SelType$
  946.         SelType$ = ""
  947.         IF ProdNo% > gMaxNumOfProds% THEN
  948. '           ERROR STFSETERROR
  949.            ERROR STFQUIT
  950.         END IF       
  951.         SelType$=Prods(ProdNo%).SelectedType        
  952.         Reg_GetProdSelectedInstallType=SelType$ 
  953. END FUNCTION
  954.  
  955. PUBLIC FUNCTION Reg_GetProdFullSize(ProdNo%) AS LONG
  956. '** Purpose:    Finds Prods(ProdNo%).FullSize
  957. '** Parameters:    ProdNo% product number
  958. '** Return:    PSize& is  the full size or 0 if not set
  959. '*************************************************************************
  960. DIM FSize&
  961.         FSize& = 0
  962.         IF ProdNo% > gMaxNumOfProds% THEN
  963. '           ERROR STFSETERROR
  964.            ERROR STFQUIT
  965.         END IF       
  966.         FSize&=Prods(ProdNo%).FullSize        
  967.         Reg_GetProdFullSize=FSize& 
  968. END FUNCTION
  969.  
  970. PUBLIC FUNCTION Reg_GetProdMinSize(ProdNo%) AS LONG
  971. '** Purpose:    Finds Prods(ProdNo%).MinSize
  972. '** Parameters:    ProdNo% product number
  973. '** Return:    PSize& is  the minimum size or 0 if not set
  974. '*************************************************************************
  975. DIM MSize&
  976.         MSize& = 0
  977.         IF ProdNo% > gMaxNumOfProds% THEN
  978. '           ERROR STFSETERROR
  979.            ERROR STFQUIT
  980.         END IF       
  981.         MSize&=Prods(ProdNo%).MinSize        
  982.         Reg_GetProdMinSize=MSize& 
  983. END FUNCTION
  984.  
  985. PUBLIC FUNCTION Reg_GetProdSupportForShare(ProdNo%) AS INTEGER
  986. '** Purpose:    Finds Prods(ProdNo%).Share
  987. '** Parameters:    ProdNo% product number
  988. '** Return:    SuppFlag% is 1 if the product supports shared tools and
  989. '**             0 if it does not
  990. '*************************************************************************
  991. DIM SuppFlag%
  992.         SuppFlag% = 0
  993.         IF ProdNo% > gMaxNumOfProds% THEN
  994. '           ERROR STFSETERROR
  995.            ERROR STFQUIT
  996.         END IF       
  997.         SuppFlag%=Prods(ProdNo%).Share        
  998.         Reg_GetProdSupportForShare=SuppFlag% 
  999. END FUNCTION
  1000.  
  1001. PUBLIC FUNCTION Reg_GetProdSupportForShare32(ProdNo%) AS INTEGER
  1002. '** Purpose:    Finds Prods(ProdNo%).Share32
  1003. '** Parameters:    ProdNo% product number
  1004. '** Return:    SuppFlag% is 1 if the product supports shared tools and
  1005. '**             0 if it does not
  1006. '*************************************************************************
  1007. DIM SuppFlag%
  1008.         SuppFlag% = 0
  1009.         IF ProdNo% > gMaxNumOfProds% THEN
  1010. '           ERROR STFSETERROR
  1011.            ERROR STFQUIT
  1012.         END IF       
  1013.         SuppFlag%=Prods(ProdNo%).Share32        
  1014.         Reg_GetProdSupportForShare32=SuppFlag% 
  1015. END FUNCTION
  1016.  
  1017.  
  1018. PUBLIC FUNCTION Reg_GetProdSupportForDataLens(ProdNo%) AS INTEGER
  1019. '** Purpose:    Finds Prods(ProdNo%).DataLens
  1020. '** Parameters:    ProdNo% product number
  1021. '** Return:    SuppFlag% is 1 if the product supports DataLens and 0 if
  1022. '**             it does not
  1023. '*************************************************************************
  1024. DIM SuppFlag%
  1025.         SuppFlag% = 0
  1026.         IF ProdNo% > gMaxNumOfProds% THEN
  1027. '           ERROR STFSETERROR
  1028.            ERROR STFQUIT
  1029.         END IF       
  1030.         SuppFlag%=Prods(ProdNo%).DataLens        
  1031.         Reg_GetProdSupportForDataLens=SuppFlag% 
  1032. END FUNCTION
  1033.  
  1034. PUBLIC FUNCTION Reg_GetProdSupportForSQL(ProdNo%) AS INTEGER
  1035. '** Purpose:    Finds Prods(ProdNo%).SQL
  1036. '** Parameters:    ProdNo% product number
  1037. '** Return:    SuppFlag% is 1 if the product supports SQL and 0 if it
  1038. '**             does not
  1039. '*************************************************************************
  1040. DIM SuppFlag%
  1041.         SuppFlag% = 0
  1042.         IF ProdNo% > gMaxNumOfProds% THEN
  1043. '           ERROR STFSETERROR
  1044.            ERROR STFQUIT
  1045.         END IF       
  1046.         SuppFlag%=Prods(ProdNo%).SQL        
  1047.         Reg_GetProdSupportForSQL=SuppFlag% 
  1048. END FUNCTION
  1049.  
  1050. PUBLIC FUNCTION Reg_GetProdSupportForParadox(ProdNo%) AS INTEGER
  1051. '** Purpose:    Finds Prods(ProdNo%).Paradox
  1052. '** Parameters:    ProdNo% product number
  1053. '** Return:    SuppFlag% is 1 if the product supports Paradox and 0 if
  1054. '**             it does not
  1055. '*************************************************************************
  1056. DIM SuppFlag%
  1057.         SuppFlag% = 0
  1058.         IF ProdNo% > gMaxNumOfProds% THEN
  1059. '           ERROR STFSETERROR
  1060.            ERROR STFQUIT
  1061.         END IF       
  1062.         SuppFlag%=Prods(ProdNo%).Paradox        
  1063.         Reg_GetProdSupportForParadox=SuppFlag% 
  1064. END FUNCTION
  1065.  
  1066. PUBLIC FUNCTION Reg_GetCDOptionStr(ProdNo%,Inst%) AS STRING
  1067. '** Purpose:    This function will do:
  1068. '**             CDOptSym$=Prods(ProdNo%).CDOpt
  1069. '**         CDOptStr$=GetListItem( CDOptSym$, Inst%)
  1070. '** Parameters:    ProdNo%  the product number
  1071. '**           Inst% instance of the the CDOption
  1072. '** Return:    CDOptStr$ CDOpt string or
  1073. '**             "" if the product number is invalid or if
  1074. '**             the inst% is out of sequence or CDOptStr$
  1075. '**             is an empty string.
  1076. '*************************************************************************
  1077. DIM CDOptSym$,CDOptStr$,CDOptListLen%
  1078.         CDOptSym$ = ""
  1079.         CDOptStr$ = ""
  1080.         CDOptListLen% = 0
  1081.         IF ProdNo% > gMaxNumOfProds% THEN
  1082. '           ERROR STFSETERROR
  1083.            ERROR STFQUIT
  1084.         END IF       
  1085.         CDOptSym$=Prods(ProdNo%).CDOpt
  1086.         IF CDOptSym$ = "" THEN
  1087. '           ERROR STFSETERROR
  1088.            ERROR STFQUIT
  1089.         END IF       
  1090.         CDOptListLen%=GetListLength(CDOptSym$)
  1091.         IF Inst% > CDOptListLen% THEN
  1092. '           ERROR STFSETERROR
  1093.            ERROR STFQUIT
  1094.         END IF       
  1095.         CDOptStr$=GetListItem( CDOptSym$, Inst%)
  1096.         Reg_GetCDOptionStr=CDOptStr$
  1097. END FUNCTION
  1098.  
  1099. PUBLIC FUNCTION Reg_GetNodeOptionStr(ProdNo%,Inst%) AS STRING
  1100. '** Purpose:    This function will do:
  1101. '** NodeOptSym$=Prods(ProdNo%).NodeOpt
  1102. '**              NodeOptStr$=GetListItem (NodeOptSym$, Inst%)
  1103. '** Parameters:    ProdNo%  the product number
  1104. '**         Inst% instance of the the NodeOption
  1105. '** Return:    NodeOptStr$ NodeOpt string or
  1106. '**             "" if the product number is invalid or if
  1107. '**             the inst% is out of sequence or
  1108. '**         NodeOptStr$  is an empty string.
  1109. '*************************************************************************
  1110. DIM NodeOptSym$,NodeOptStr$,NodeOptListLen%
  1111.         NodeOptSym$ = ""
  1112.         NodeOptStr$ = ""
  1113.         NodeOptListLen% = 0
  1114.         IF ProdNo% > gMaxNumOfProds% THEN
  1115. '           ERROR STFSETERROR
  1116.            ERROR STFQUIT
  1117.         END IF       
  1118.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  1119.         IF NodeOptSym$ = "" THEN
  1120. '           ERROR STFSETERROR
  1121.            ERROR STFQUIT
  1122.         END IF       
  1123.         NodeOptListLen%=GetListLength(NodeOptSym$)
  1124.         IF Inst% > NodeOptListLen% THEN
  1125. '           ERROR STFSETERROR
  1126.            ERROR STFQUIT
  1127.         END IF       
  1128.         NodeOptStr$=GetListItem( NodeOptSym$, Inst%)
  1129.         Reg_GetNodeOptionStr=NodeOptStr$
  1130. END FUNCTION
  1131.  
  1132. PUBLIC FUNCTION Reg_GetNumOfCDOptions(ProdNo%) AS INTEGER
  1133. '** Purpose:    This function will do:
  1134. '**             CDOptSym$=Prods(ProdNo%).CDOpt
  1135. '**              OptNum%=GetListLength( CDOptSym$)
  1136. '** Parameters: ProdNo%  the product number
  1137. '** Return:    OptNum% number of CDOptions or 0 if the product number
  1138. '**             is invalid or if 
  1139. '**             there are no CDOptions.
  1140. '*************************************************************************
  1141. DIM CDOptSym$,CDOptNum%
  1142.         CDOptSym$ = ""
  1143.         CDOptNum% = 0
  1144.         IF ProdNo% > gMaxNumOfProds% THEN
  1145. '           ERROR STFSETERROR
  1146.            ERROR STFQUIT
  1147.         END IF       
  1148.         CDOptSym$=Prods(ProdNo%).CDOpt
  1149.         IF CDOptSym$ = "" THEN
  1150. '           ERROR STFSETERROR
  1151.            ERROR STFQUIT
  1152.         END IF       
  1153.         CDOptNum%=GetListLength( CDOptSym$)
  1154.         Reg_GetNumOfCDOptions=CDOptNum%
  1155. END FUNCTION
  1156.  
  1157. PUBLIC FUNCTION Reg_GetNumOfNodeOptions(ProdNo%) AS INTEGER
  1158. '** Purpose:    This function will do:
  1159. '**             NodeOptSym$=Prods(ProdNo%).NodeOpt
  1160. '**              OptNum%=GetListLength( NodeOptSym$)
  1161. '** Parameters:    ProdNo%  the product number
  1162. '** Return:    OptNum% number of NodeOptions or 0 if the product number
  1163. '**             is invalid or if there are no NodeOptions.
  1164. '*************************************************************************
  1165. DIM NodeOptSym$,NodeOptNum%
  1166.         NodeOptSym$ = ""
  1167.         NodeOptNum% = 0
  1168.         IF ProdNo% > gMaxNumOfProds% THEN
  1169. '           ERROR STFSETERROR
  1170.            ERROR STFQUIT
  1171.         END IF       
  1172.         NodeOptSym$=Prods(ProdNo%).NodeOpt
  1173.         IF NodeOptSym$ = "" THEN
  1174. '           ERROR STFSETERROR
  1175.            ERROR STFQUIT
  1176.         END IF       
  1177.         NodeOptNum%=GetListLength( NodeOptSym$)
  1178.         Reg_GetNumOfNodeOptions=NodeOptNum%
  1179. END FUNCTION
  1180.  
  1181. PUBLIC FUNCTION Reg_GetProdSupportForSrv(ProdNo%) AS INTEGER
  1182. '** Purpose:    Finds Prods(ProdNo%).Srv
  1183. '** Parameters:    ProdNo% product number
  1184. '** Return:    SuppFlag% is 1 if the product supports server install
  1185. '**             and 0 if it does not
  1186. '*************************************************************************
  1187. DIM SuppFlag%
  1188.         SuppFlag% = 0
  1189.         IF ProdNo% > gMaxNumOfProds% THEN
  1190. '           ERROR STFSETERROR
  1191.            ERROR STFQUIT
  1192.         END IF       
  1193.         SuppFlag%=Prods(ProdNo%).Srv        
  1194.         Reg_GetProdSupportForSrv=SuppFlag% 
  1195. END FUNCTION
  1196.  
  1197. PUBLIC FUNCTION Reg_GetProdSupportForDist(ProdNo%) AS INTEGER
  1198. '** Purpose:    Finds Prods(ProdNo%).Dist
  1199. '** Parameters:    ProdNo% product number
  1200. '** Return:    SuppFlag% is 1 if the product supports only distribution install
  1201. '**             and 0 if it does not
  1202. '*************************************************************************
  1203. DIM SuppFlag%
  1204.         SuppFlag% = 0
  1205.         IF ProdNo% > gMaxNumOfProds% THEN
  1206. '           ERROR STFSETERROR
  1207.            ERROR STFQUIT
  1208.         END IF       
  1209.         SuppFlag%=Prods(ProdNo%).Dist        
  1210.         Reg_GetProdSupportForDist=SuppFlag% 
  1211. END FUNCTION
  1212.  
  1213. PUBLIC FUNCTION Reg_GetProdSupportForExtraProdDirs(ProdNo%) AS INTEGER
  1214. '** Purpose:    Finds Prods(ProdNo%).ExtraProdDirsNum
  1215. '** Parameters:    ProdNo% product number
  1216. '** Return:    SuppFlag% is 1 if the product needs two main directories prompt
  1217. '**             and 0 if it does not
  1218. '*************************************************************************
  1219. DIM SuppFlag%
  1220.         SuppFlag% = 0
  1221.         IF ProdNo% > gMaxNumOfProds% THEN
  1222. '           ERROR STFSETERROR
  1223.            ERROR STFQUIT
  1224.         END IF       
  1225.         SuppFlag%=Prods(ProdNo%).ExtraProdDirsNum        
  1226.         Reg_GetProdSupportForExtraProdDirs=SuppFlag% 
  1227. END FUNCTION
  1228.  
  1229. PUBLIC FUNCTION Reg_GetProdSupportForLicense(ProdNo%) AS INTEGER
  1230. '** Purpose:    Finds Prods(ProdNo%).License
  1231. '** Parameters:    ProdNo% product number
  1232. '** Return:    SuppFlag% is 1 if the product supports Licensing and 0
  1233. '**             if it does not
  1234. '*************************************************************************
  1235. DIM SuppFlag%
  1236.         SuppFlag% = 0
  1237.         IF ProdNo% > gMaxNumOfProds% THEN
  1238. '           ERROR STFSETERROR
  1239.            ERROR STFQUIT
  1240.         END IF       
  1241.         SuppFlag%=Prods(ProdNo%).License        
  1242.         Reg_GetProdSupportForLicense=SuppFlag% 
  1243. END FUNCTION
  1244.  
  1245. PUBLIC FUNCTION Reg_IsLicenseSelected(ProdNo%) AS INTEGER
  1246. '** Purpose:    Finds Prods(ProdNo%).LicenseSelected
  1247. '** Parameters:    ProdNo% product number
  1248. '** Return:    SuppFlag% is 1 if the product selected Licensing and 0
  1249. '**             if it did not
  1250. '*************************************************************************
  1251. DIM SelFlag%
  1252.         SelFlag% = 0
  1253.         IF ProdNo% > gMaxNumOfProds% THEN
  1254. '           ERROR STFSETERROR
  1255.            ERROR STFQUIT
  1256.         END IF       
  1257.         SelFlag%=Prods(ProdNo%).LicenseSelected
  1258.         Reg_IsLicenseSelected=SelFlag% 
  1259. END FUNCTION
  1260.  
  1261. PUBLIC FUNCTION Reg_GetCountDirectory(ProdNo%)   AS STRING
  1262. '** Purpose:    This function will do:
  1263. '**             CountDir$=Prods(ProdNo%).CountDirectory
  1264. '** Parameters:    ProdNo%  the product number
  1265. '** Return:    CountDir$ the directory name
  1266. '*************************************************************************
  1267. DIM CountDir$
  1268.         CountDir$=""
  1269.         IF ProdNo% > gMaxNumOfProds% THEN
  1270. '           ERROR STFSETERROR
  1271.            ERROR STFQUIT
  1272.         END IF               
  1273.         CountDir$=Prods(ProdNo%).CountDirectory
  1274.         Reg_GetCountDirectory=CountDir$        
  1275. END FUNCTION
  1276.  
  1277. PUBLIC FUNCTION Reg_GetProdSupportForATM(ProdNo%) AS INTEGER
  1278. '** Purpose:    Finds Prods(ProdNo%).ATM
  1279. '** Parameters:    ProdNo% product number
  1280. '** Return:    SuppFlag% is 1 if the product supports ATM and 0 if it
  1281. '**             does not
  1282. '*************************************************************************
  1283. DIM SuppFlag%
  1284.         SuppFlag% = 0
  1285.         IF ProdNo% > gMaxNumOfProds% THEN
  1286. '           ERROR STFSETERROR
  1287.            ERROR STFQUIT
  1288.         END IF       
  1289.         SuppFlag%=Prods(ProdNo%).ATM        
  1290.         Reg_GetProdSupportForATM=SuppFlag% 
  1291. END FUNCTION
  1292.  
  1293. PUBLIC FUNCTION Reg_GetDirSymbolList(ProdNo%)   AS STRING
  1294. '** Purpose:    This function will do:
  1295. '**             DirSym$=Prods(ProdNo%).DirSymList
  1296. '** Parameters:    ProdNo%  the product number
  1297. '** Return:    DirSym$ directory symbol name for this product.
  1298. '*************************************************************************
  1299. DIM DirList$
  1300.         DirList$=""
  1301.         IF ProdNo% > gMaxNumOfProds% THEN
  1302. '           ERROR STFSETERROR
  1303.            ERROR STFQUIT
  1304.         END IF               
  1305.         DirList$=Prods(ProdNo%).DirSymList
  1306.         Reg_GetDirSymbolList=DirList$        
  1307. END FUNCTION
  1308.  
  1309. PUBLIC FUNCTION Reg_GetProgManagerGroupName(ProdNo%)   AS STRING
  1310. '** Purpose:    This function will do:
  1311. '**             ProdManagerGroupName$=Prods(ProdNo%).ProgManagGroup
  1312. '** Parameters:    ProdNo%  the product number
  1313. '** Return:    ProdManagerGroupName$ the group name
  1314. '*************************************************************************
  1315. DIM ProdManagerGroupName$
  1316.         ProdManagerGroupName$=""
  1317.         IF ProdNo% > gMaxNumOfProds% THEN
  1318. '           ERROR STFSETERROR
  1319.            ERROR STFQUIT
  1320.         END IF               
  1321.         ProdManagerGroupName$=Prods(ProdNo%).ProgManagerGroup
  1322.         Reg_GetProgManagerGroupName=ProdManagerGroupName$        
  1323. END FUNCTION
  1324.  
  1325. PUBLIC FUNCTION Reg_GetNumOfDirectories(ProdNo%) AS INTEGER
  1326. '** Purpose:    This function will do:
  1327. '**             DirSym$=Prods(ProdNo%).DirSymList
  1328. '**              DirNum%=GetListLength( DirSym$)
  1329. '** Parameters:    ProdNo%  the product number
  1330. '** Return:    DirNum% number of directories or 0 if the product number
  1331. '**             is invalid or if there product did not register any directories.
  1332. '*************************************************************************
  1333. DIM DirSym$,DirNum%
  1334.         DirSym$ = ""
  1335.         DirNum% = 0
  1336.         IF ProdNo% > gMaxNumOfProds% THEN
  1337. '           ERROR STFSETERROR
  1338.            ERROR STFQUIT
  1339.         END IF       
  1340.         DirSym$=Prods(ProdNo%).DirSymList
  1341.         IF DirSym$ = "" THEN
  1342. '           ERROR STFSETERROR
  1343.            ERROR STFQUIT
  1344.         END IF       
  1345.         DirNum%=GetListLength( DirSym$)
  1346.         Reg_GetNumOfDirectories=DirNum%
  1347. END FUNCTION
  1348.  
  1349. PUBLIC FUNCTION Reg_IsCDOptionSelected(ProdNo%,Inst%) AS STRING
  1350. '** Purpose:    This function will do:
  1351. '**             CDOptSym$=Prods(ProdNo%).CDOptSelected
  1352. '**         CDOptSel%=GetListItem( CDOptSym$, Inst%)
  1353. '** Parameters:    ProdNo%  the product number
  1354. '**           Inst% instance of the the CDOption
  1355. '** Return:    1 or 0 if the CDOpt was selected or not
  1356. '*************************************************************************
  1357. DIM CDOptSelectedSym$,CDOptSel$,CDOptSelListLen%
  1358.         CDOptSelectedSym$ = ""
  1359.         CDOptSel$ = ""
  1360.         CDOptSelListLen% = 0
  1361.         IF ProdNo% > gMaxNumOfProds% THEN
  1362. '           ERROR STFSETERROR
  1363.            ERROR STFQUIT
  1364.         END IF       
  1365.         CDOptSelectedSym$=Prods(ProdNo%).CDOptSelected
  1366.         IF CDOptSelectedSym$ = "" THEN
  1367. '           ERROR STFSETERROR
  1368.            ERROR STFQUIT
  1369.         END IF       
  1370.         CDOptSelListLen%=GetListLength(CDOptSelectedSym$)
  1371.         IF Inst% > CDOptSelListLen% THEN
  1372. '           ERROR STFSETERROR
  1373.            ERROR STFQUIT
  1374.         END IF       
  1375.         CDOptSel$=GetListItem( CDOptSelectedSym$, Inst%)
  1376.         Reg_IsCDOptionSelected=CDOptSel$
  1377. END FUNCTION
  1378.  
  1379. PUBLIC FUNCTION Reg_IsNodeOptionSelected(ProdNo%,Inst%) AS STRING
  1380. '** Purpose:    This function will do:
  1381. '**             NodeOptSelSym$=Prods(ProdNo%).NodeOptSelected
  1382. '**         NodeOptSel$=GetListItem( NodeOptSelSym$, Inst%)
  1383. '** Parameters:    ProdNo%  the product number
  1384. '**           Inst% instance of the the NodeOption
  1385. '** Return:    1 or 0 if the NodeOpt was selected or not
  1386. '*************************************************************************
  1387. DIM NodeOptSelectedSym$,NodeOptSel$,NodeOptSelListLen%
  1388.         NodeOptSelectedSym$ = ""
  1389.         NodeOptSel$ = ""
  1390.         NodeOptSelListLen% = 0
  1391.         IF ProdNo% > gMaxNumOfProds% THEN
  1392. '           ERROR STFSETERROR
  1393.            ERROR STFQUIT
  1394.         END IF       
  1395.         NodeOptSelectedSym$=Prods(ProdNo%).NodeOptSelected
  1396.         IF NodeOptSelectedSym$ = "" THEN
  1397. '           ERROR STFSETERROR
  1398.            ERROR STFQUIT
  1399.         END IF       
  1400.         NodeOptSelListLen%=GetListLength(NodeOptSelectedSym$)
  1401.         IF Inst% > NodeOptSelListLen% THEN
  1402. '           ERROR STFSETERROR
  1403.            ERROR STFQUIT
  1404.         END IF       
  1405.         NodeOptSel$=GetListItem( NodeOptSelectedSym$, Inst%)
  1406.         Reg_IsNodeOptionSelected=NodeOptSel$
  1407. END FUNCTION
  1408.  
  1409. PUBLIC FUNCTION Reg_IsNodeOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  1410. '** Purpose:    This function will do:
  1411. '**             NodeOptSelDefaultSym$=Prods(ProdNo%).NodeOptDefaultSelected
  1412. '**         NodeOptDefaultSel$=GetListItem( NodeOptSelDefaultSym$, Inst%)
  1413. '** Parameters:    ProdNo%  the product number
  1414. '**           Inst% instance of the the NodeOptionDefault
  1415. '** Return:    1 or 0 if the NodeOpt was selected or not
  1416. '*************************************************************************
  1417. DIM NodeOptSelectedDefaultSym$,NodeOptSelDefault$,NodeOptSelDefaultListLen%
  1418.         NodeOptSelectedDefaultSym$ = ""
  1419.         NodeOptSelDefault$ = ""
  1420.         NodeOptSelDefaultListLen% = 0
  1421.         IF ProdNo% > gMaxNumOfProds% THEN
  1422. '           ERROR STFSETERROR
  1423.            ERROR STFQUIT
  1424.         END IF       
  1425.         NodeOptSelectedDefaultSym$=Prods(ProdNo%).NodeOptDefaultSelected
  1426.         IF NodeOptSelectedDefaultSym$ = "" THEN
  1427. '           ERROR STFSETERROR
  1428.            ERROR STFQUIT
  1429.         END IF       
  1430.         NodeOptSelDefaultListLen%=GetListLength(NodeOptSelectedDefaultSym$)
  1431.         IF Inst% > NodeOptSelDefaultListLen% THEN
  1432. '           ERROR STFSETERROR
  1433.            ERROR STFQUIT
  1434.         END IF       
  1435.         NodeOptSelDefault$=GetListItem( NodeOptSelectedDefaultSym$, Inst%)
  1436.         Reg_IsNodeOptionDefaultSelected=NodeOptSelDefault$
  1437. END FUNCTION
  1438.  
  1439. PUBLIC FUNCTION Reg_IsCDOptionDefaultSelected(ProdNo%,Inst%) AS STRING
  1440. '** Purpose:    This ftion will do:
  1441. '**             CDOptSelDefaultSym$=Prods(ProdNo%).CDOptDefaultSelected
  1442. '**         CDOptDefaultSel$=GetListItem( CDOptSelDefaultSym$, Inst%)
  1443. '** Parameters:    ProdNo%  the product number
  1444. '**           Inst% instance of the the CDOptionDefault
  1445. '** Return:    1 or 0 if the NodeOpt was selected or not
  1446. '*************************************************************************
  1447. DIM CDOptSelectedDefaultSym$,CDOptSelDefault$,CDOptSelDefaultListLen%
  1448.         CDOptSelectedDefaultSym$ = ""
  1449.         CDOptSelDefault$ = ""
  1450.         CDOptSelDefaultListLen% = 0
  1451.         IF ProdNo% > gMaxNumOfProds% THEN
  1452. '           ERROR STFSETERROR
  1453.            ERROR STFQUIT
  1454.         END IF       
  1455.         CDOptSelectedDefaultSym$=Prods(ProdNo%).CDOptDefaultSelected
  1456.         IF CDOptSelectedDefaultSym$ = "" THEN
  1457. '           ERROR STFSETERROR
  1458.            ERROR STFQUIT
  1459.         END IF       
  1460.         CDOptSelDefaultListLen%=GetListLength(CDOptSelectedDefaultSym$)
  1461.         IF Inst% > CDOptSelDefaultListLen% THEN
  1462. '           ERROR STFSETERROR
  1463.            ERROR STFQUIT
  1464.         END IF       
  1465.         CDOptSelDefault$=GetListItem( CDOptSelectedDefaultSym$, Inst%)
  1466.         Reg_IsCDOptionDefaultSelected=CDOptSelDefault$
  1467. END FUNCTION
  1468.  
  1469.  
  1470. PUBLIC SUB Reg_SetSystemFileSize(ProdNo%,Size&)
  1471. '** Purpose:    Set the size of the system files to be installed for
  1472. '**            a product
  1473. '** Parameters:    
  1474. '** Return:    NONE
  1475. '*************************************************************************
  1476.  
  1477.    IF ProdNo% > gMaxNumOfProds% THEN
  1478.       '** ERROR STFSETERROR
  1479.       ERROR STFQUIT
  1480.    END IF
  1481.  
  1482.     Prods(ProdNo%).SystemFileSize = Size&
  1483.  
  1484. END SUB
  1485.  
  1486. PUBLIC FUNCTION Reg_GetSystemFileSize(ProdNo%) AS LONG
  1487. '** Purpose:    Get the size of the system files to be installed for
  1488. '**            a product
  1489. '** Parameters:    
  1490. '** Return:    System file size in bytes
  1491. '*************************************************************************
  1492.  
  1493.    IF ProdNo% > gMaxNumOfProds% THEN
  1494.       '** ERROR STFSETERROR
  1495.       ERROR STFQUIT
  1496.    END IF
  1497.  
  1498.    Reg_GetSystemFileSize = Prods(ProdNo%).SystemFileSize
  1499.  
  1500. END FUNCTION
  1501.  
  1502. PUBLIC FUNCTION Reg_GetBillboardNumber(ProdNo%)   AS INTEGER
  1503. '** Purpose:    This function will do:
  1504. '**             BBNum%=Prods(ProdNo%).BillboardNumber
  1505. '** Parameters:    ProdNo%  the product number
  1506. '** Return:    BBNum% the number of billboards for the product
  1507. '*************************************************************************
  1508. DIM BBNum%
  1509.         BBNum%=0
  1510.         IF ProdNo% > gMaxNumOfProds% THEN
  1511. '           ERROR STFSETERROR
  1512.            ERROR STFQUIT
  1513.         END IF               
  1514.         BBNum%=Prods(ProdNo%).BillboardNumber
  1515.         Reg_GetBillboardNumber=BBNum%        
  1516. END FUNCTION
  1517.  
  1518. PUBLIC SUB Reg_SetSHAREEXESupport(ProdNo%,Flag%) 
  1519. '** Purpose:    This function will set:
  1520. '**             Prods(ProdNo%).SHAREEXE=Flag%
  1521. '** Parameters:    ProdNo%  the product number
  1522. '**         Flag% 1 if the product needs SHARE.EXE or 0 if it does not
  1523. '*************************************************************************
  1524.         IF ProdNo% > gMaxNumOfProds% THEN
  1525. '           ERROR STFSETERROR
  1526.            ERROR STFQUIT
  1527.         END IF               
  1528.         IF Flag% <> 0 AND Flag% <> 1 THEN
  1529. '           ERROR STFSETERROR
  1530.            ERROR STFQUIT
  1531.         END IF               
  1532.     Prods(ProdNo%).SHAREEXE=Flag%
  1533. END SUB
  1534.  
  1535. PUBLIC FUNCTION Reg_GetSHAREEXESupport(ProdNo%) AS INTEGER
  1536. '** Purpose:    Finds Prods(ProdNo%).SHAREXE
  1537. '** Parameters:    ProdNo% product number
  1538. '** Return:    SuppFlag% is 1 if the product needs SHARE.EXE and 0
  1539. '**             if it does not
  1540. '*************************************************************************
  1541. DIM SuppFlag%
  1542.         SuppFlag% = 0
  1543.         IF ProdNo% > gMaxNumOfProds% THEN
  1544. '           ERROR STFSETERROR
  1545.            ERROR STFQUIT
  1546.         END IF       
  1547.         SuppFlag%=Prods(ProdNo%).SHAREEXE        
  1548.         Reg_GetSHAREEXESupport=SuppFlag% 
  1549. END FUNCTION
  1550.  
  1551. PUBLIC SUB Reg_SetNotesSupport(ProdNo%,Flag%) 
  1552. '** Purpose:    This function will set:
  1553. '**             Prods(ProdNo%).Notes=Flag%
  1554. '** Parameters:    ProdNo%  the product number
  1555. '**         Flag% 1 if the product needs Lotus Notes or 0 if it does not
  1556. '*************************************************************************
  1557.         IF ProdNo% > gMaxNumOfProds% THEN
  1558. '           ERROR STFSETERROR
  1559.            ERROR STFQUIT
  1560.         END IF               
  1561.         IF Flag% <> 0 AND Flag% <> 1 THEN
  1562. '           ERROR STFSETERROR
  1563.            ERROR STFQUIT
  1564.         END IF               
  1565.     Prods(ProdNo%).Notes=Flag%
  1566. END SUB
  1567.  
  1568.  
  1569. PUBLIC SUB Reg_SetPreviousVersion(ProdNo%,prev$)  
  1570. '** Purpose:    This function will set:
  1571. '**             Prods(ProdNo%).PreviousVersion=prev$
  1572. '** Parameters:    ProdNo%  the product number
  1573. '*************************************************************************
  1574.         IF ProdNo% > gMaxNumOfProds% THEN
  1575.            ERROR STFQUIT
  1576.         END IF               
  1577.  
  1578.         Prods(ProdNo%).PreviousVersion=prev$
  1579. END SUB
  1580.  
  1581.  
  1582. PUBLIC FUNCTION Reg_GetPreviousVersion(ProdNo%)   AS STRING
  1583. '** Purpose:    Finds Prods(ProdNo%).PrevVersion
  1584. '** Parameters:    ProdNo% product number
  1585. '*************************************************************************
  1586.         IF ProdNo% > gMaxNumOfProds% THEN
  1587.            ERROR STFQUIT
  1588.         END IF               
  1589.         Reg_GetPreviousVersion=Prods(ProdNo%).PreviousVersion
  1590.  
  1591. END FUNCTION
  1592.  
  1593. PUBLIC SUB Reg_SetObsFiles(ProdNo%,support%)  
  1594. '** Purpose:    This function will set:
  1595. '**             Prods(ProdNo%).ObsoleteFiles=support% (1 or 0)
  1596. '** Parameters:    ProdNo%  the product number
  1597. '*************************************************************************
  1598.         IF ProdNo% > gMaxNumOfProds% THEN
  1599.            ERROR STFQUIT
  1600.         END IF               
  1601.  
  1602.         Prods(ProdNo%).ObsoleteFiles=support%
  1603. END SUB
  1604.  
  1605. PUBLIC FUNCTION Reg_GetObsFiles(ProdNo%)   AS INTEGER
  1606. '** Purpose:    Finds Prods(ProdNo%).ObsoleteFiles
  1607. '** Parameters:    ProdNo% product number
  1608. '*************************************************************************
  1609.         IF ProdNo% > gMaxNumOfProds% THEN
  1610.            ERROR STFQUIT
  1611.         END IF               
  1612.         Reg_GetObsFiles=Prods(ProdNo%).ObsoleteFiles
  1613.  
  1614. END FUNCTION
  1615.  
  1616. PUBLIC FUNCTION Reg_GetNotesSupport(ProdNo%) AS INTEGER
  1617. '** Purpose:    Finds Prods(ProdNo%).Notes
  1618. '** Parameters:    ProdNo% product number
  1619. '** Return:    SuppFlag% is 1 if the product needs Lotus Notes and 0
  1620. '**             if it does not
  1621. '*************************************************************************
  1622. DIM SuppFlag%
  1623.         SuppFlag% = 0
  1624.         IF ProdNo% > gMaxNumOfProds% THEN
  1625. '           ERROR STFSETERROR
  1626.            ERROR STFQUIT
  1627.         END IF       
  1628.         SuppFlag%=Prods(ProdNo%).Notes        
  1629.         Reg_GetNotesSupport=SuppFlag% 
  1630. END FUNCTION
  1631.  
  1632.  
  1633. PUBLIC FUNCTION Reg_GetMoreDirsCBName(ProdNo%)   AS STRING
  1634. '** Purpose:    Finds Prods(ProdNo%).MoreDirsCBName
  1635. '** Parameters:    ProdNo% product number
  1636. '*************************************************************************
  1637.         IF ProdNo% > gMaxNumOfProds% THEN
  1638.            ERROR STFQUIT
  1639.         END IF               
  1640.         Reg_GetMoreDirsCBName=Prods(ProdNo%).MoreDirsCBName
  1641.  
  1642. END FUNCTION
  1643.  
  1644. PUBLIC FUNCTION Reg_GetMoreDirsDlgID(ProdNo%)   AS INTEGER
  1645. '** Purpose:    Finds Prods(ProdNo%).MoreDirsDlgID
  1646. '** Parameters:    ProdNo% product number
  1647. '*************************************************************************
  1648.         IF ProdNo% > gMaxNumOfProds% THEN
  1649.            ERROR STFQUIT
  1650.         END IF               
  1651.         Reg_GetMoreDirsDlgID=Prods(ProdNo%).MoreDirsDlgID
  1652.  
  1653. END FUNCTION
  1654.  
  1655. PUBLIC FUNCTION Reg_GetMoreDirsHlpID(ProdNo%)   AS LONG
  1656. '** Purpose:    Finds Prods(ProdNo%).MoreDirsDlgID
  1657. '** Parameters:    ProdNo% product number
  1658. '*************************************************************************
  1659.         IF ProdNo% > gMaxNumOfProds% THEN
  1660.            ERROR STFQUIT
  1661.         END IF               
  1662.         Reg_GetMoreDirsHlpID=Prods(ProdNo%).MoreDirsHlpID
  1663.  
  1664. END FUNCTION
  1665.  
  1666. '*************************************************************************
  1667. PUBLIC SUB Reg_SetSelectedFolder(ProdNo%, s$)
  1668.  
  1669. '** Purpose:    Set the path for the Win95 start up folder links
  1670. '** Author:   
  1671. '** Arguments:  None
  1672. '** Symbols In: 
  1673. '** Returns:
  1674. '*************************************************************************
  1675.  ''set the components directoey and any other directory
  1676.     Prods(ProdNo%).ProgFolder = s$
  1677. END SUB
  1678.  
  1679. PUBLIC FUNCTION Reg_GetSelectedFolder(ProdNo%) AS STRING
  1680. '** Purpose:    Return the folder that the program group will
  1681. '**                appear under.
  1682. '** Parameters:    ProdNo%  the product number
  1683. '**         Flag% 1 if the product is in UI and 0 if not
  1684. '*************************************************************************
  1685.     Reg_GetSelectedFolder = Prods(ProdNo%).ProgFolder
  1686. END FUNCTION
  1687.  
  1688. '*************************************************************************
  1689. PUBLIC FUNCTION Lot_GetProgFolder(ProdNo%) AS STRING
  1690.  
  1691. '** Purpose:   Return the SelectedFolder value
  1692. '** Author:    
  1693. '** Arguments: 
  1694. '** Returns:   the value in SelectedFolder
  1695. '*************************************************************************
  1696.     Lot_GetProgFolder = Reg_GetSelectedFolder(ProdNo%)+"\"
  1697.  
  1698. END FUNCTION
  1699.  
  1700. '*************************************************************************
  1701. PUBLIC FUNCTION Lot_AddLinkIconToFolder(prodno%, szProgPath$, szLinkName$, szDesc$, szArgument$, szWorkingDir$, szIconpath$, Icon&) AS INTEGER
  1702.  
  1703. '** Purpose:   Make a Win95 Shell link and specify the icon
  1704. '** Author:    OM
  1705. '** Arguments: 
  1706. '**        prodno%:            Product number, should be 1 for most cases.
  1707. '**        szProgPath$:    Full path of program file
  1708. '**        szLinkName$:    Name of the link.  What will appear in menu
  1709. '**        szDesc$:            Description. Doesn't seem to do anything now.
  1710. '**        szArgument$:    Arguments passed to program
  1711. '*            szWorkingDir$:    Working directory for program
  1712. '**        szIconpath$:    Full path of file containing icon
  1713. '**        Icon&:            Number of the icon within file above
  1714. '** Returns:   True if worked False otherwise
  1715. '*************************************************************************
  1716.     IF 0 = _
  1717.       CreateLinkIcon(szProgPath, Lot_GetProgFolder(1)+szLinkName$, _
  1718.                    szDesc$, szArgument$, szWorkingDir$, szIconpath$, Icon&) THEN
  1719.         Lot_AddLinkIconToFolder = TRUE
  1720.     ELSE
  1721.         Lot_AddLinkIconToFolder = FALSE
  1722.     END IF    
  1723.  
  1724. END FUNCTION
  1725.  
  1726. '*************************************************************************
  1727. PUBLIC FUNCTION Lot_AddLinkToFolder(prodno%, szProgPath$, szLinkName$, szDesc$, szArgument$, szWorkingDir$) AS INTEGER
  1728.  
  1729. '** Purpose:   Make a Win95 Shell link
  1730. '** Author:    OM
  1731. '** Arguments: 
  1732. '**        prodno%:            Product number, should be 1 for most cases.
  1733. '**        szProgPath$:    Full path of program file
  1734. '**        szLinkName$:    Name of the link.  What will appear in menu
  1735. '**        szDesc$:            Description. Doesn't seem to do anything now.
  1736. '**        szArgument$:    Arguments passed to program
  1737. '*            szWorkingDir$:    Working directory for program
  1738. '** Returns:   True if worked False otherwise
  1739. '*************************************************************************
  1740.     IF 0 = _
  1741.       CreateLink(szProgPath, Lot_GetProgFolder(1)+szLinkName$, _
  1742.                    szDesc$, szArgument$, szWorkingDir$) THEN
  1743.         Lot_AddLinkToFolder = TRUE
  1744.     ELSE
  1745.         Lot_AddLinkToFolder = FALSE
  1746.     END IF    
  1747.  
  1748. END FUNCTION
  1749.  
  1750. '*************************************************************************
  1751. PUBLIC SUB Reg_SetRootFolder(s$)
  1752. '** Purpose:    Set the Symbol that will be used as the root of
  1753. '**               the Program folder tree.
  1754. '** Parameters:    s$ = the path of the root
  1755. '*************************************************************************
  1756.    SetSymbolValue SYM_ROOTFOLDER$, s$
  1757.     
  1758. END SUB
  1759.  
  1760. PUBLIC FUNCTION Reg_GetRootFolder() AS STRING
  1761. '** Purpose:    Return value of the Symbol that is for the root of
  1762. '**               the Program folder tree.
  1763. '** Parameters:
  1764. '*************************************************************************
  1765.    Reg_GetRootFolder = GetSymbolValue(SYM_ROOTFOLDER$)
  1766.     
  1767. END FUNCTION
  1768.